effective C++(2)

  1.如果你打算在一个内含引用的类内支持赋值操作,你必须自己定义拷贝赋值操作符。
  2.如果某个基类将拷贝赋值操作符声明为private,编译器就会拒绝为其子类生成一个拷贝赋值操作符。
  3.当子类对象经由一个基类指针被删除,而该基类带着一个非虚析构函数,则在实际执行的时候,对象的子类部分没被销毁。将基类的析构函数声明为虚函数之后,子类的析构函数也自动成为虚析构函数,在主函数中基类指针指向的是派生类对象,当delete释放指针所指向的存储空间时,会执行派生类的析构函数,派生类的析构函数执行完之后会紧接着执行基类的析构函数,以释放从基类继承过来的成员变量所消耗的资源。
  4.auto_ptrs有个不寻常的性质,若通过拷贝构造或拷贝赋值运算符复制它们,它们会变成null,而复制所得的指针将取得资源的唯一拥有权。
  5.应该尽量延后变量的定义,直到能够给它初值实参为止,因为这样不仅能够避免构造和析构非必要对象,还可以避免毫无意义的默认构造行为。
  6.将大多数inline限制在小型、频繁调用的函数身上。
  7.public继承意味着“is a”的关系,虚函数意味着接口必须被继承,非虚函数意味着接口和实现都必须被继承。
  8.private继承使得基类所有成员在子类中的访问权限变为private。